SPB Git

spb/autoscholar

Public
1.2 KB · 37 lines typescript
1import { publicationDecisions, qualityGateResults, reviewFindings } from "@autoscholar/db";2import { asc, desc, eq } from "drizzle-orm";3import { handler, json } from "@/lib/server/api";4import { db } from "@/lib/server/db";5import { requireAdmin } from "@/lib/server/session";67export const runtime = "nodejs";89export const GET = handler(async (req, { params }) => {10  await requireAdmin(req);11  const { runId } = (await params) as { runId: string };12  const gates = await db()13    .select()14    .from(qualityGateResults)15    .where(eq(qualityGateResults.runId, runId))16    .orderBy(desc(qualityGateResults.createdAt), asc(qualityGateResults.gate));17  const evaluations = [...new Set(gates.map((g) => g.evaluationId))];18  const findings = await db()19    .select()20    .from(reviewFindings)21    .where(eq(reviewFindings.runId, runId))22    .orderBy(asc(reviewFindings.round), asc(reviewFindings.severity));23  const decisions = await db()24    .select()25    .from(publicationDecisions)26    .where(eq(publicationDecisions.runId, runId))27    .orderBy(desc(publicationDecisions.createdAt));28  return json({29    evaluations: evaluations.map((id) => ({30      evaluationId: id,31      gates: gates.filter((g) => g.evaluationId === id),32    })),33    findings,34    decisions,35  });36});37
Files · main
Menu

Theme